package com.wuseguang.springcloud.util;

import com.fasterxml.jackson.annotation.JsonProperty;

import java.util.ArrayList;
import java.util.List;

/**
 * 分页返回工具
 * @param <T>
 */
public class PaginationUtil<T> {

    /**
     * 所在页数
     */
    private int indexNO;
    /**
     * 总数据页数
     */
     private int pageCount;
     /**
     *每页显示行数
     */
    private int rows = 20;
    /**
     * 数据集合
     */
    private List<T> dataList = new ArrayList<T>();
    /**
     * 数据总条数
     */
    private int count;

    /**
     * 返回分页数据
     * @param pageCount 总条数
     * @param rows 每页数量
     * @param dataList 所有数据
     * @param indexNO 页码
     */
    public PaginationUtil(int pageCount,int rows, List<T> dataList,Integer indexNO) {
        this.rows = rows;
        setPageCount(pageCount);
        this.dataList = dataList;
        if(indexNO != null)
            this.indexNO = indexNO;
    }

    /**
     * 返回分页数据
     * @param pageCount 总条数啊
     * @param dataList 所有数据
     * @param indexNO 页码
     */
    public PaginationUtil(int pageCount, List<T> dataList,Integer indexNO) {
        setPageCount(pageCount);
        this.dataList = dataList;
        if(indexNO != null)
            this.indexNO = indexNO;
    }

    public PaginationUtil() {
    }

    public int getIndexNO() {
        return indexNO;
    }
    public void setIndexNO(int indexNO) {
        this.indexNO = indexNO;
    }
    public int getCount() {
        return count;
    }
    public void setCount(int count) {
        this.count = count;
    }
    public int getRows() {
        return rows;
    }
    public void setRows(int rows) {
        this.rows = rows;
    }
    @JsonProperty(value="rows")
    public List<T> getDataList() {
        return dataList;
    }
    public void setDataList(List<T> dataList) {
        this.dataList = dataList;
    }

    public int getPageCount() {
        return pageCount;
    }

    public void setPageCount(int count) {
        this.count = count;
        this.pageCount = (int)Math.ceil(count/(double)rows);
    }



}
